package com.example.demo.calc;

import java.util.Objects;

public class IntegerCompare {


    public static void main(String[] args) {
        Integer num1 = 128;
        Integer num2 = 128;
        if(num1 == num2){
            System.out.println("num1等于num2");
        } else {
            System.out.println("num1不等于num2");
        }

        // 解决方法特别简单我们将==换成equals()方法，此时问题迎刃而解。
        if(Objects.equals(num1, num2)){
            System.out.println("num1等于num2");
        } else {
            System.out.println("num1不等于num2");
        }
        System.out.println("=======================");

        /**
         * Java中 == 比较的是地址值。当Integer的值在-128至127之间时，Integer对象是在IntegerCache.cache中产生会复用已有对象。
         * 当超过这个范围时产生的对象是在堆内存中，就不会复用已有的对象。所以用 == 比较就会出现问题。建议大家使用整形包装类比较时统一都使用equals方法
         */
        Integer num3 = 127;
        Integer num4 = 127;
        if(num3 == num4){
            System.out.println("num3等于num4");
        } else {
            System.out.println("num3不等于num4");
        }

        Integer num5 = 125;
        Integer num6 = 127;
        if(num5 == num6){
            System.out.println("num5等于num6");
        } else {
            System.out.println("num5不等于num6");
        }

    }
}
